package com.qt.leetcode;

public class Demo07 {

    public static void main(String[] args) {

        int reverse = reverse(-123);
        System.out.println(reverse);

    }

    /**
     *
     * 7. 整数反转
     *
     * 给你一个 32 位的有符号整数 x ，返回将 x 中的数字部分反转后的结果。
     *
     * 如果反转后整数超过 32 位的有符号整数的范围[−231, 231− 1] ，就返回 0。
     *
     * 假设环境不允许存储 64 位整数（有符号或无符号）。
     * 
     */

    public static int reverse(int x) {
        //x = 154;
        //int fanwei     -2 ^ 31 ---> 2^31 -  1
        //在Java中，整数类型int的范围是-2^31到2^31-1，也就是-2147483648到2147483647。
        int result = 0;

        while (x != 0){
            int item = x % 10;
            x = x / 10;
            //-2147483648到2147483647  下面有乘 10  + 各位数操作；所以要进行编辑判断
            if(result > Integer.MAX_VALUE / 10 || (result == Integer.MAX_VALUE / 10 && item > 7)){
                return 0;
            }
            if(result < Integer.MIN_VALUE / 10 || (result == Integer.MIN_VALUE / 10 && item < -8)){
                return 0;
            }
            result = result * 10 + item;
        }

        return result;


    }




}
